home *** CD-ROM | disk | FTP | other *** search
/ Aminet 32 / Aminet 32 (1999)(Schatztruhe)[!][Aug 1999].iso / Aminet / comm / ums / UMS11_9_beta.lha / UMS / rexx / ShowGroups.rexx < prev    next >
OS/2 REXX Batch file  |  1995-11-11  |  4KB  |  142 lines

  1. /* ------------------------------------------------------------------------
  2.    :Program.    ShowGroups.rexx
  3.    :Contents.   shows all groups in UMS' messagebase
  4.    :Author.     Kai Bolay [kai]
  5.    :Address.    Hoffmannstraße 168
  6.    :Address.    D-71229 Leonberg
  7.    :EMail.      kai@studbox.uni-stuttgart.de
  8.    :Version.    $VER: ShowGroups.rexx 2.1 (11.11.95)
  9.    :Copyright.  Public Domain
  10.    :Language.   ARexx
  11.    :Translator. RexxMast
  12.    
  13. $Id: ShowGroups.rexx 2.1 1995/11/11 12:13:26 kai Exp $   
  14. $Log: ShowGroups.rexx $
  15. # Revision 2.1  1995/11/11  12:13:26  kai
  16. # started RCS. Old history:
  17. # v1.0 [kai] 23-Sep-93
  18. # v1.2 [kai] 29-Sep-93 added MakeFlags()
  19. # v1.3 [hg]  16-Jan-94 improofed argument parsing,
  20. #                      added option NoUpdate
  21. # v1.4 [hG]  23-Jan-94 uses UMSInit.rexx 1.1 and
  22. #                      hgRexxSupport.library
  23. # v2.0 [kai] 21-Dec-94 adapted to UMS v11
  24. # v2.1 [kai] 11-Nov-95 adapted to newest standard
  25. #
  26.  
  27. ------------------------------------------------------------------------ */
  28.  
  29. options results
  30.  
  31. RC = 0
  32.  
  33. signal on BREAK_C
  34. signal on BREAK_D
  35. signal on BREAK_E
  36. signal on BREAK_F
  37. signal on ERROR
  38. signal on HALT
  39. signal on IOERR
  40. signal on SYNTAX
  41.  
  42. /*** Init ***/
  43.  
  44. call addlib("rexxdossupport.library", 0, -30)
  45. call addlib("ums.library", 0, -210, 11)
  46. call UMSInitConsts()
  47.  
  48. /*** Arguments ***/
  49.  
  50. parse SOURCE . " " . " " ProgramName .
  51. ArgsTemplate = "NAME,PASSWORD,SERVER/K";
  52. args.SERVER = ""
  53. args.PASSWORD = ""
  54.  
  55. parse arg arguments
  56. if strip(arguments) = '?' then do
  57.   call writech(STDOUT, ArgsTemplate || ': ')
  58.   arguments = readln(STDIN)
  59. end; else nop
  60. if ~ReadArgs(arguments,ArgsTemplate,"args.") then do
  61.   say Fault(RC, ProgramName)
  62.   exit 10
  63. end; else nop
  64.  
  65. /*** Login ***/
  66.  
  67. account = UMSLogin(args.name, args.password, args.server)
  68. if account = 0 then do
  69.   say "unable to login."
  70.   exit 10
  71. end
  72.  
  73. /*** Do the magic ***/
  74.  
  75. /* clear local flag 0 on all messages */
  76. res = UMSSelectFlags(account, "LOCAL", UMSMakeFlags(), UMSMakeFlags(0),,, "LOCAL", UMSMakeFlags(), UMSMakeFlags())
  77. say "you have" res "messages in your message base"
  78.  
  79. /* set local flag 0 on all readable messages */
  80. res = UMSSelectFlags(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(),,, "USER", UMSMakeFlags(UMSUSTAT_ReadAccess), UMSMakeFlags())
  81. say "you can't read" res "messages"
  82.  
  83. last = 0
  84. do forever
  85.   /* find next message with flag 0 set */
  86.   last = UMSSearchFlags(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(), last)
  87.   if last = 0 then leave
  88.   drop msg. /* _IMPORTANT_ */
  89.   if ~ UMSReadMsgField(account, last, msg., UMSCODE_Group, TRUE) then do
  90.     call CheckErr
  91.     RC = 20; call LOGOUT
  92.   end
  93.   if symbol("msg." || UMSCode_Group) ~= "VAR" then do
  94.     /* clear local flag 0 on all private messages */
  95.     res = UMSSelectField(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(),,, UMSCODE_Group, "", true)
  96.     say res "private messages"
  97.   end; else do
  98.     /* clear local flag 0 on all messages belonging to this group */
  99.     res = UMSSelectField(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(),,, UMSCODE_Group, msg.UMSCODE_Group, true)
  100.     say res "messages in" msg.UMSCode_Group
  101.   end
  102. end
  103.  
  104. /*** Final cleanup ***/
  105.  
  106. BREAK_C:
  107. BREAK_D:
  108. BREAK_E:
  109. BREAK_F:
  110.  
  111. RC = 0
  112.  
  113. ERROR:
  114. HALT:
  115. IOERR:
  116. SYNTAX:
  117.  
  118. IF RC ~= 0 THEN DO
  119.   SAY "Error: " rc errortext(rc) "Line" sigl
  120.   RC = 20
  121. END
  122.  
  123. /*** Logout ***/
  124.  
  125. LOGOUT:
  126.  
  127. if account ~= 0 then do
  128.   call UMSLogout(account)
  129.   account = 0
  130. end
  131.  
  132. exit RC
  133.  
  134. /*** Support ***/
  135.  
  136. CheckErr: procedure expose account
  137.   err = UMSErrNum(account)
  138.   if err ~= 0 then do
  139.     say "UMS Error #" || err || ": " || UMSErrTxt(account)
  140.   end
  141. return
  142.